/**
 * 物品相关API
 */
import { apiClient } from './index'
import type { ApiResponse } from './types/common'
import type { ItemsResponse, CategoriesResponse, ItemsFilter, PriceHistoryResponse } from '@/types/items'
// 移除了RequestPriority导入（队列系统已移除）

// 物品API端点
export const ITEMS_API = {
  GET_ITEMS_LIST: '/items/getItemsList',
  GET_ITEM_DETAIL: '/items/getDetail',
  GET_PRICE_HISTORY: '/items/getPriceHistory',
  GET_CATEGORIES: '/items/getCategories',
  GET_BATCH_PRICES: '/items/getBatchPrices'
}

/**
 * 获取物品列表 - 优化版本，使用GET请求以更好利用缓存
 * @param params 查询参数
 */
export function getItemsList(params: Partial<ItemsFilter>): Promise<ApiResponse<ItemsResponse>> {
  // 对于简单查询，使用GET请求以利用缓存
  const isSimpleQuery = !params.search && !params.minPrice && !params.maxPrice

  if (isSimpleQuery) {
    return apiClient.get<ItemsResponse>(ITEMS_API.GET_ITEMS_LIST, {
      params
    })
  }

  // 复杂查询仍使用POST请求
  return apiClient.post<ItemsResponse>(ITEMS_API.GET_ITEMS_LIST, params)
}

/**
 * 获取物品分类 - 使用POST请求确保兼容性
 */
export function getCategories(): Promise<ApiResponse<CategoriesResponse>> {
  return apiClient.post<CategoriesResponse>(ITEMS_API.GET_CATEGORIES, {})
}

/**
 * 获取物品详情 - 使用POST请求确保兼容性
 * @param objectId 物品ID
 */
export function getItemDetail(objectId: number) {
  return apiClient.post<ApiResponse<any>>(ITEMS_API.GET_ITEM_DETAIL, {
    object_id: objectId
  })
}

/**
 * 获取价格历史 - 使用POST请求确保兼容性
 * @param objectId 物品ID
 * @param range 时间范围 (24h, 3d, 7d, 30d, 60d, 90d, 180d)
 */
export function getPriceHistory(objectId: number, range: string = '24h') {
  return apiClient.post<ApiResponse<PriceHistoryResponse>>(ITEMS_API.GET_PRICE_HISTORY, {
    object_id: objectId,
    range
  })
}

/**
 * 批量获取物品价格
 * @param objectIds 物品ID数组
 */
export function getBatchPrices(objectIds: number[]) {
  return apiClient.post<ApiResponse<Record<string, { price: number; price_24h_ago: number }>>>(
    ITEMS_API.GET_BATCH_PRICES, 
    { object_ids: objectIds }
  )
} 